#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
char map[8][8];
bool vis[8][8];
int n,m,t;
int si,sj;
int di,dj;
bool dfs(int i,int j,int t){
    //printf("%d %d %d\n",i,j,t);
    if(t==0){
        if(i==di && j==dj){
            return true;
        }
        else{
            return false;
        }
    }
    if(vis[i][j]){
        //printf("%d %d 2\n",i,j);
        return false;
    }
    vis[i][j]=true;
    for(int xi=-1;xi<=1;xi++){
        for(int xj=-1;xj<=1;xj++){
            if((xi==0 && xj==0) || (xi!=0 && xj!=0)){
                continue;
            }
            if(i+xi<0 || i+xi>=n || j+xj<0 || j+xj>=m){
                continue;
            }
            if(!vis[i+xi][j+xj]){
                if(dfs(i+xi,j+xj,t-1)){
                    return true;
                }
                vis[i+xi][j+xj]=false;
            }
        }
    }
    return false;
}
int main(void){
    //freopen("data.txt","r",stdin);
    while(~scanf("%d%d%d",&n,&m,&t) && n && m && t){
        memset(vis,false,sizeof(vis));
        for(int i=0;i<n;i++){
            scanf("%s",map[i]);
            for(int j=0;j<m;j++){
                if(map[i][j]=='X'){
                    vis[i][j]=true;
                }
                else if(map[i][j]=='S'){
                    si=i;
                    sj=j;
                }
                else if(map[i][j]=='D'){
                    di=i;
                    dj=j;
                }
            }
        }
        if(dfs(si,si,t)){
            printf("YES\n");
        }
        else{
            printf("NO\n");
        }
    }
    return 0;
}
